<!DOCTYPE html>
<html>
  <head>
    <title>017_00节流的原理和使用</title>
  </head>
  <style></style>
  <body>
    <div class="src">
      <div class="dragabled">
        <div class="txt" id="txt">
          <p draggable="true">此段文字设置了属性draggable="true"</p>
        </div>
      </div>
    </div>
    <script>
      var dragSrc = document.getElementById("txt");
      // 拖动开始
      dragSrc.ondragstart = function (e) {
        console.log("拖动开始");
      };
      /**
       * fn 待转换的方法
       * gapTime 方法执行的频率  间隔执行的时间
      */
      function throttle (fn, gapTime) {
        gapTime = gapTime || 500;
        var timerId = null;
        var last; // 上次执行的时间
        return function () {
          var args = arguments;
          var context = this;
          var nowTime = +new Date();
          if (last && nowTime < last + gapTime) {
            clearTimeout(timerId);
            timerId = setTimeout(function () {
              last = +new Date();
              fn.apply(context, args)
            }, gapTime);
          } else {
            last = nowTime
            fn.apply(context, args)
          }
        }
      }
      // 拖动中
      dragSrc.ondrag = throttle(function () {
        console.log("拖动中");
      })
      // 如果是传递参数是这样的写法
      // var test = '传递参数';
      // dragSrc.ondrag = throttle(function () {
      //   console.log("拖动中");
      // })(test);
      dragSrc.ondragend = function () {
        // 拖动结束
        console.log("拖动结束");
      };
    </script>
  </body>
</html>
